package 二分查找.easy;

/**
 * 1. 问题描述
 *      猜数字游戏的规则如下：
 *      每轮游戏，我都会从1到n 随机选择一个数字。 请你猜选出的是哪个数字。
 *      如果你猜错了，我会告诉你，你猜测的数字比我选出的数字是大了还是小了。
 *      你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果，返回值一共有 3 种可能的情况（-1，1或 0）：
 *      -1：我选出的数字比你猜的数字小 pick < num
 *      1：我选出的数字比你猜的数字大 pick > num
 *      0：我选出的数字和你猜的数字一样。恭喜！你猜对了！pick == num
 *
 * 2. 算法分析
 *
 *
 * 3. 代码实现
 */
@SuppressWarnings("all")
public class 猜数字大小 {
    public static void main(String[] args) {

    }

    /**
     * 典型的二分
     * @param n
     * @return
     */
    public static int guessNumber(int n) {
        int i = 1; int j = n;
        while(i <= j) {
            int mid = i + (j - i) / 2;
            if(guess(mid) == 0) {
                return mid;
            } else if(guess(mid) == -1) {
                j = mid - 1;
            } else if(guess(mid) == 1) {
                i = mid + 1;
            }
        }
        return -1;
    }

    public static int guess(int num) {
        return -1;
    }
}
